/* -----------------------------------------------------------------------
 *   Copyright (C) 2008 by Denjs
 *   dplsoft@pisem.net
 *   http://qdroid.berlios.de
 * -----------------------------------------------------------------------
 *   This program is free software licensed under GNU GPL License v.2 ; see main.cpp fo details
 *   Эта программа является свободным программным обеспечением; распространяемым под
 *   лицензией GNU General Public License v.2 (УНИВЕРСАЛЬНАЯ ОБЩЕСТВЕННАЯ ЛИЦЕНЗИЯ GNU версия 2.0) 
 * ----------------------------------------------------------------------- */
/*
 * t_TreeWidgetItem.h
 *
 *  Created on: 21.11.2008
 *      Author: Denjs
 *
 *
 *      ver 2008.11.25
 */

#ifndef t_TreeWidgetItem_H_
#define t_TreeWidgetItem_H_

#include "t_AbstractQDroidBot.h"
#include <QTreeWidget>

/*
  Оболочка для QTreeWidgetItem который нельзя напрямую использовать в скрипте.

*/

class t_TreeWidgetItem : public t_AbstractQDroidBot
{
    Q_OBJECT

    public:
    	t_TreeWidgetItem(QObject *parent =0);

    	//это (ниже) нужно что бы можно было засунуть t_FileList в контейнер QList
    	// возможно так-же связано с работой QtScript движка - см функции после определения класса
    	// спец. настройки для QtScript (v 2008.11.25)
    	// Шаг 1 из 8
    	t_TreeWidgetItem(const t_TreeWidgetItem &other);
    	//это (ниже) нужно что бы можно было засунуть t_TreeWidgetItem в контейнер QList
    	// возможно так-же связано с работой QtScript движка - см функции после определения класса
    	// спец. настройки для QtScript (v 2008.11.25)
    	// Шаг 2 из 8
    	t_TreeWidgetItem& operator=(const t_TreeWidgetItem &other);

    	QTreeWidgetItem *CoreQTreeWidgetItem;//TODO не хорошо так... но пусть пока ...

    	//Q_PROPERTY(QString Text READ get_text WRITE set_text );


    public slots:
		QString std_in(QString Message); //(*virtual*) needs to be redefined to make real class
		t_TreeWidgetItem* copy();//(*virtual*)костыли в рузультуате того что регистрируем ссылку а не сам тип для движка

		int add_child(t_TreeWidgetItem *_NewChild);
		int set_qwidgetitem(QTreeWidgetItem *_CoreQTreeWidgetItem);

		QString get_text(int _Column);
		int set_text(int _Column, QString _Text);

		int set_column_background(int _Column,QString _RRGGBBColorString);//
/* надо описывать t_Color и иже с ними*/

    signals:

    protected:

    private:

};
//нужно чтобы можно было передавать эти элементы как параметры в функции внутри QtScript
// спец. настройки для QtScript (v 2008.11.25)
// Шаг 3 из 8
Q_DECLARE_METATYPE(t_TreeWidgetItem*);

// спец. настройки для QtScript (v 2008.11.25)
// Шаг 4 из 8
static QScriptValue qdroid_t_TreeWidgetItem_toScriptValue(QScriptEngine *engine, t_TreeWidgetItem* const &in)
{ return engine->newQObject(in); }

// спец. настройки для QtScript (v 2008.11.25)
// Шаг 5 из 8
static void qdroid_t_TreeWidgetItem_fromScriptValue(const QScriptValue &object, t_TreeWidgetItem* &out)
{ out = qobject_cast<t_TreeWidgetItem*>(object.toQObject()); }

// спец. настройки для QtScript (v 2008.11.25)
// Шаг 6 из 8
//конструктор для последующего его определения как new в скрипте
static QScriptValue qdroid_t_TreeWidgetItem_constructor(QScriptContext *QSContext, QScriptEngine *QSEngine)
	{
		//t_BaseBot BaseBot;
		QScriptValue QtSObject;
		QtSObject=QSEngine->newQObject(new t_TreeWidgetItem()); //
		//qsBaseBot=QSEngine->toScriptValue(BaseBot);
		return QtSObject;
	}

// спец. настройки для QtScript (v 2008.11.25)
// Шаг 7 из 8
// - это qScriptRegisterMetaType регистрация но это нужно сделать в головном классе
// например в глобальной функции "define__qdroid_qtscript_functions()"
//// t_TreeWidgetItem TYPE defenition
//	qScriptRegisterMetaType(_QSEngine, qdroid_t_TreeWidgetItem_toScriptValue, qdroid_t_TreeWidgetItem_fromScriptValue);

// спец. настройки для QtScript (v 2008.11.25)
// Шаг 8 из 8
//- определение конструктора в контексте скрипта
//// t_TreeWidgetItem NEW constructor defenition
//	QScriptValue t_TreeWidgetItem_constr_func = _QSEngine->newFunction(qdroid_t_TreeWidgetItem_constructor);
//	_QSEngine->globalObject().setProperty("t_TreeWidgetItem", t_TreeWidgetItem_constr_func);


//=================================================================

#endif /* t_TreeWidgetItem_H_ */
